package game.gui.panelinventaire;

import game.controler.ecouteurs.inventaire.EcouteurInventaireExaminer;
import game.controler.ecouteurs.inventaire.EcouteurInventaireSelectionner;
import game.controler.ecouteurs.inventaire.EcouteurInventaireCombiner;
import game.controler.ecouteurs.inventaire.EcouteurInventaireDiscuter;
import game.controler.gestionnaires.elementjeu.GestionnaireFous;
import game.controler.gestionnaires.elementjeu.GestionnaireObjets;
import game.model.objets.Inventoriable;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JLabel;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;

/**
 *
 * @author Gab'z
 */
public class ElementPanelInventaire extends JPanel implements ActionListener {

    private JLabel labelInventaire;
    private JPopupMenu popupMenu = null;
    public static final int TYPE_OBJET = 0;
    public static final int TYPE_FOU = 1;

    private ElementPanelInventaire() {
    }

    public ElementPanelInventaire(String idInventaire, int type, boolean selected) {
        this.setLayout(null);
        this.setSize(90, 90);

        if (idInventaire != null) {
            buildPopupMenu(idInventaire, type);

            Inventoriable inventoriable;
            if (type == TYPE_OBJET) {
                inventoriable = GestionnaireObjets.getGobjets().getObjet(idInventaire);
            } else {
                inventoriable = GestionnaireFous.getGfous().getFou(idInventaire);
            }
            labelInventaire = new JLabel(inventoriable.getImgInventaire());
            labelInventaire.setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.RAISED));
            labelInventaire.addMouseListener(new MouseAdapter() {

                @Override
                public void mouseReleased(MouseEvent e) {
                    if (e.getButton() == MouseEvent.BUTTON1) {
                        popupMenu.show(e.getComponent(), e.getX(), e.getY());
                    }
                }
            });
            if (selected) {
                this.setBackground(Color.white);
            }

        } else {
            labelInventaire = new JLabel();
            labelInventaire.setBorder(javax.swing.BorderFactory.createEtchedBorder());
        }
        labelInventaire.setSize(80, 80);
        labelInventaire.setLocation(5, 5);
        this.add(labelInventaire);
    }

    private void buildPopupMenu(String idInventaire, Integer type) {
        JMenuItem menuItem;
        popupMenu = new JPopupMenu();
        menuItem = new JMenuItem("Sélectionner");
        menuItem.setActionCommand("SELECT");
        menuItem.addActionListener(new EcouteurInventaireSelectionner(idInventaire, type));
        popupMenu.add(menuItem);
        menuItem = new JMenuItem("Examiner");
        menuItem.setActionCommand("EXAM");
        menuItem.addActionListener(new EcouteurInventaireExaminer(idInventaire, type));
        popupMenu.add(menuItem);
        if (type == TYPE_OBJET) {
            menuItem = new JMenuItem("Combiner");
            menuItem.setActionCommand("COMB");
            menuItem.addActionListener(new EcouteurInventaireCombiner(idInventaire));
            popupMenu.add(menuItem);
        }
        if (type == TYPE_FOU) {
            menuItem = new JMenuItem("Discuter");
            menuItem.setActionCommand("TALK");
            menuItem.addActionListener(new EcouteurInventaireDiscuter(idInventaire));
            popupMenu.add(menuItem);
        }
    }

    @Override
    public void actionPerformed(ActionEvent e) {
       // System.out.println("Action = " + e.getActionCommand() + " pour l'objet d'id ");
    }
}
